package array;

import java.util.ArrayList;
import java.util.Arrays;

/**
 * @author lj
 * @date 2022/01/12 16:37
 * @email milolj@foxmail.com
 */
public class LeetCode_array7 {
    /**
     * 给定一个由 整数 组成的 非空 数组所表示的非负整数，在该数的基础上加一。
     * <p>
     * 最高位数字存放在数组的首位， 数组中每个元素只存储单个数字。
     * <p>
     * 你可以假设除了整数 0 之外，这个整数不会以零开头。
     * <p>
     *  
     * <p>
     * 示例 1：
     * <p>
     * 输入：digits = [1,2,3]
     * 输出：[1,2,4]
     * 解释：输入数组表示数字 123。
     * 示例 2：
     * <p>
     * 输入：digits = [4,3,2,1]
     * 输出：[4,3,2,2]
     * 解释：输入数组表示数字 4321。
     * 示例 3：
     * <p>
     * 输入：digits = [0]
     * 输出：[1]
     * <p>
     * 作者：力扣 (LeetCode)
     * 链接：https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2cv1c/
     * 来源：力扣（LeetCode）
     * 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
     */


    public static void main(String[] args) {
//        int[] array1 = new int[]{13,19,92};
//        int[] array2 = new int[]{13};
        int[] array1 = new int[]{9,9};
        LeetCode_array7 leetCode_array1 = new LeetCode_array7();
        long currentTimeMillis1 = System.currentTimeMillis();
        System.out.println("当前时间是：" + currentTimeMillis1);
        int[] intersect = leetCode_array1.plusOne(array1);
        System.out.println("小号的时间是：" + (System.currentTimeMillis() - currentTimeMillis1));
        System.out.println("结果是" + Arrays.toString(intersect));
    }

    public int[] plusOne(int[] digits) {
        int length = digits.length - 1;
        int time = digits.length;
        while (time > 0) {
            if (digits[length] == 9) {
                digits[length] = 0;
                length--;
                time --;
                if (time == 0) {
                    int[] ints = new int[digits.length + 1];
                    ints[0] = 1;
                    System.arraycopy(digits, 0, ints, 1, digits.length);
                    return ints;
                }
                continue;
            }
            digits[length] += 1;
            break;
        }
        return digits;
    }
}
